package com.zb.zeus.common.engine.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;

/**
 * 可计算的
 * @author fujianjian
 * @since 2021/4/7 10:43
 */
public interface Calcable {

    @JsonIgnore
    String getFormula();
    @JsonIgnore
    String getProjectName();

    /**
     * 实际值
     * @return
     */
    default BigDecimal actualVal() {
        return BigDecimal.ZERO;
    }

    /**
     * 计划值
     * @return
     */
    default BigDecimal targetVal() {
        return BigDecimal.ZERO;
    }

    /**
     * 权重
     * @return
     */
    default BigDecimal weightVal() {
        return BigDecimal.ZERO;
    }


    default List<Calcable> childCalcable() {
        return Collections.emptyList();
    }

    /**
     * 获取当前业务对象人员
     * @return
     */
    default String subjectName() {
        return StringUtils.EMPTY;
    }

    /**
     * 获取分数
     * @return
     */
    @JsonIgnore
    BigDecimal getScore();

    /**
     * 设置分数
     * @param score
     */
    void setScore(BigDecimal score);
}
